Batch scripting এ error handling এমন একটি প্রক্রিয়া যা আপনাকে স্ক্রিপ্টের চলার সময় ঘটে যাওয়া ত্রুটিগুলোর প্রতি সঠিকভাবে প্রতিক্রিয়া জানাতে সহায়তা করে। এটা বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার স্ক্রিপ্টগুলো বিভিন্ন সিস্টেম কমান্ড বা ফাইল অপারেশনের সাথে যুক্ত থাকে, যেখানে ত্রুটি হওয়া সাধারণ ব্যাপার। Batch script এ ত্রুটি পরিচালনার জন্য সরাসরি try-catch
স্টাইলের কোন মেকানিজম নেই, তবে ERRORLEVEL
, IF ERRORLEVEL
, এবং কিছু সাধারণ টেকনিক্যাল কৌশল ব্যবহার করে আপনি ত্রুটি সনাক্ত ও পরিচালনা করতে পারেন।
IF ERRORLEVEL
Batch script এ ERRORLEVEL একটি বিশেষ ভেরিয়েবল যা পূর্ববর্তী কমান্ডের ফলাফল হিসেবে ফিরে আসে। এটি একটি সংখ্যা, যা কমান্ডের সফলতা বা ব্যর্থতা নির্দেশ করে। সাধারণত:
IF ERRORLEVEL
কন্ডিশন ব্যবহার করে আপনি ত্রুটি চেক করতে পারেন এবং প্রয়োজন হলে সংশোধনমূলক পদক্ষেপ নিতে পারেন।
@echo off
rem একটি কমান্ড চালানো
dir C:\NonExistentFolder
rem ERRORLEVEL চেক করা
if %ERRORLEVEL% neq 0 (
echo ত্রুটি ঘটেছে! ডিরেক্টরি পাওয়া যায়নি।
) else (
echo কমান্ড সফল!
)
pause
exit /b
এখানে dir
কমান্ডটি এমন একটি ফোল্ডার চেক করতে চেষ্টা করছে যা অস্তিত্ব নেই, ফলে ত্রুটি ঘটবে এবং ERRORLEVEL
1 বা তার উপরে চলে যাবে। স্ক্রিপ্টের পরবর্তী অংশে ERRORLEVEL
চেক করা হয়েছে এবং ত্রুটি থাকলে ব্যবহারকারীকে সতর্ক করা হয়েছে।
try-catch
স্টাইলের error handling নেই, তবে কিছু পরিমাণ ত্রুটি সনাক্ত করার জন্য আপনি নিজের মতো একটি কাঠামো তৈরি করতে পারেন।@echo off
setlocal
rem একটি ভেরিয়েবল সেট করা
set result=0
rem একটি কমান্ড চালানো (যেমন, একটি ভুল ফোল্ডার খোলা)
dir C:\NonExistentFolder >nul 2>&1
rem ERRORLEVEL চেক করা
if %ERRORLEVEL% neq 0 (
set result=1
echo ত্রুটি ঘটেছে! ডিরেক্টরি পাওয়া যায়নি।
) else (
set result=0
echo কমান্ড সফল!
)
rem ফলাফল স্ক্রিপ্টে রিটার্ন করা
echo ফলাফল: %result%
pause
exit /b
এখানে 2>&1
ব্যবহার করা হয়েছে যে কোনো ত্রুটি মেসেজ স্ট্যান্ডার্ড আউটপুটে রিডাইরেক্ট হবে এবং ERRORLEVEL
চেকের মাধ্যমে সেই ত্রুটির জন্য যথাযথ প্রতিক্রিয়া জানানো হবে।
@echo off
rem একটি কমান্ড চালানো
del C:\NonExistentFile.txt
rem ERRORLEVEL চেক করা এবং কাস্টম ত্রুটি মেসেজ প্রদর্শন করা
if %ERRORLEVEL% neq 0 (
echo [ERROR] ফাইলটি মুছে ফেলা যায়নি: C:\NonExistentFile.txt
) else (
echo ফাইল সফলভাবে মুছে ফেলা হয়েছে।
)
pause
exit /b
এখানে del কমান্ডটি এমন একটি ফাইল মুছে ফেলতে চেষ্টা করছে যা অস্তিত্ব নেই। ERRORLEVEL
চেক করে কাস্টম ত্রুটি বার্তা প্রদর্শন করা হচ্ছে।
স্ক্রিপ্টের ত্রুটি লগ করার জন্য আপনি একটি লোগ ফাইল তৈরি করতে পারেন। এটি স্ক্রিপ্টের ত্রুটি ট্র্যাক করার জন্য উপকারী হতে পারে।
@echo off
rem একটি কমান্ড চালানো
dir C:\NonExistentFolder >nul 2>&1
rem ERRORLEVEL চেক করা এবং লগ তৈরি করা
if %ERRORLEVEL% neq 0 (
echo %date% %time% - ত্রুটি ঘটেছে! > error.log
echo ত্রুটি লগে যুক্ত হয়েছে।
) else (
echo %date% %time% - কমান্ড সফল! >> success.log
echo সফলতার লগে যুক্ত হয়েছে।
)
pause
exit /b
এখানে error.log
এবং success.log
ফাইল ব্যবহার করা হচ্ছে ত্রুটি এবং সফলতার তথ্য সংরক্ষণের জন্য।
Echo Command:
echo
কমান্ড ব্যবহার করা। এটি স্ক্রিপ্টের চলমান অবস্থার তথ্য প্রদান করে।@echo on
উপরের কমান্ডটি স্ক্রিপ্টের প্রতিটি কমান্ড এবং আউটপুট প্রিন্ট করবে, যা ডিবাগ করার সময় সহায়ক হতে পারে।
pause
কমান্ড ব্যবহার করলে স্ক্রিপ্টটি রানের মাঝে থেমে যায় এবং ব্যবহারকারীকে ত্রুটি বা আউটপুট দেখার সুযোগ দেয়।Batch scripting এ error handling খুবই গুরুত্বপূর্ণ এবং এটি সরাসরি ত্রুটি সনাক্তকরণ এবং প্রতিক্রিয়া জানাতে সহায়তা করে। ERRORLEVEL এবং IF ERRORLEVEL ব্যবহার করে আপনি স্ক্রিপ্টের ত্রুটিগুলি চেক করতে পারেন এবং যথাযথ পদক্ষেপ নিতে পারেন। আরও উন্নত error handling করতে custom error messages, log files এবং ডিবাগging টেকনিক ব্যবহার করা যেতে পারে। Batch script এ সরাসরি try-catch
সমর্থিত না হলেও, সঠিক error handling কৌশল ব্যবহার করে আপনি স্ক্রিপ্টের কার্যকারিতা বাড়াতে পারেন।
Batch Script-এ Error Level এবং Exit Code ব্যবহার করে আপনি একটি কমান্ডের সফলতা বা ব্যর্থতা নির্ধারণ করতে পারেন। যখন একটি কমান্ড রান করা হয়, তখন এটি একটি Exit Code বা Error Level রিটার্ন করে, যা কমান্ডটির সম্পন্ন হওয়ার অবস্থা নির্দেশ করে।
এই Exit Code বা Error Level বিভিন্ন পরিস্থিতিতে সফলতা বা ত্রুটি নির্দেশ করার জন্য ব্যবহৃত হয়। সাধারণত, 0 মানে সফল এবং 1 বা অন্য কোনো ধনাত্মক সংখ্যা মানে ত্রুটি।
Batch Script-এ Error Level চেক করতে if
স্টেটমেন্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:
echo Hello, World!
echo.
:: Error Level চেক করা
if %errorlevel% equ 0 (
echo Command was successful.
) else (
echo Command failed with Error Level %errorlevel%.
)
এখানে:
%errorlevel%
: এটি সর্বশেষ কমান্ডের Exit Code ধারণ করে।equ
: এটি "equal" অর্থে ব্যবহৃত হয়। এখানে এটি চেক করছে যে %errorlevel%
0 এর সমান কি না।Batch Script-এর কিছু সাধারণ Exit Code এবং তাদের মানের অর্থ:
ধরা যাক আপনি dir
কমান্ড ব্যবহার করছেন এবং ফোল্ডারটি আছে কি না তা চেক করতে চান:
dir myfolder > nul 2>&1
if %errorlevel% equ 0 (
echo Directory exists.
) else (
echo Directory does not exist.
)
এখানে:
dir myfolder
: এটি myfolder নামক ফোল্ডারটি দেখতে চায়।> nul 2>&1
: এর মাধ্যমে আউটপুট এবং এরর মেসেজ সমূহ nul এ রিডাইরেক্ট করা হয় যাতে স্ক্রিপ্টটি সাইলেন্টলি চলে।%errorlevel%
: এটি চেক করে যে কমান্ডটি সফলভাবে সম্পন্ন হয়েছে কি না। যদি 0 হয়, তাহলে Directory exists মেসেজ প্রদর্শিত হবে, অন্যথায় Directory does not exist মেসেজ প্রদর্শিত হবে।এখন চলুন দেখিঃ আমরা ফাইল কপি করার একটি উদাহরণ দিচ্ছি এবং তাতে Error Level চেক করব:
copy myfile.txt backup.txt
if %errorlevel% equ 0 (
echo File was copied successfully.
) else (
echo File copy failed with Error Level %errorlevel%.
)
এখানে:
copy myfile.txt backup.txt
: এটি myfile.txt ফাইলটিকে backup.txt এ কপি করার চেষ্টা করবে।%errorlevel%
: এর মাধ্যমে আপনি চেক করতে পারেন যে কপি অপারেশনটি সফল হয়েছে কিনা। যদি সফল হয়, তবে "File was copied successfully." মেসেজটি দেখাবে, অন্যথায় ত্রুটির কোডসহ একটি মেসেজ দেখাবে।ধরা যাক আপনি একটি স্ক্রিপ্ট লিখছেন যা একটি কম্পিউটার শাটডাউন করবে, তবে শাটডাউন সফল হয়েছে কি না তা চেক করতে চান। এখানে Exit Code ব্যবহার করা হবে:
shutdown /s /f
if %errorlevel% equ 0 (
echo Shutdown initiated successfully.
) else (
echo Shutdown failed with Error Level %errorlevel%.
)
এখানে:
shutdown /s /f
: এটি সিস্টেমকে শাটডাউন করবে।%errorlevel%
: শাটডাউন কমান্ডের পরবর্তী Exit Code চেক করা হবে। 0 হলে সফল এবং অন্য কোনো কোড হলে ত্রুটি।Batch Script-এ Error Level এবং Exit Code ব্যবহার করে আপনি কমান্ডের সফলতা বা ব্যর্থতা নির্ধারণ করতে পারেন। এটা বিশেষভাবে স্ক্রিপ্টের মধ্যে ত্রুটি শনাক্তকরণ এবং ত্রুটি ভিত্তিক সিদ্ধান্ত নেওয়ার জন্য ব্যবহৃত হয়। যখন একটি কমান্ড চালানো হয়, তখন সেটি একটি Exit Code প্রদান করে, যা দ্বারা আপনি স্ক্রিপ্টের পরবর্তী লজিক নির্ধারণ করতে পারেন। Error Level চেক করে আপনি ফাইল অপারেশন, কমান্ড রান, বা অন্যান্য কার্যাবলী সফল হয়েছে কি না তা সঠিকভাবে জানতে পারবেন।
Batch Script এ সরাসরি try-catch
ব্লক যেমন আপনি অন্যান্য প্রোগ্রামিং ভাষায় যেমন C# বা Java এ দেখতে পান, তা ব্যবহার করা যায় না। তবে, Batch Script এ Error Handling করা সম্ভব এবং কিছু কমান্ডের মাধ্যমে আপনি ত্রুটি শনাক্ত এবং পরিচালনা করতে পারেন। Batch Script এ Error Handling করার জন্য সাধারণত ErrorLevel
এবং IF
কন্ডিশন ব্যবহার করা হয়। এখানে, আমরা try-catch
এর মতো ত্রুটি পরিচালনার কিছু কৌশল আলোচনা করব, যা Batch Script এর সাথে কাজ করতে সাহায্য করবে।
Batch Script এ কোনো কমান্ড চালানোর পর তার ফলাফল বা স্ট্যাটাস কোড (Exit Code) দেখার জন্য ErrorLevel
ব্যবহার করা হয়। ErrorLevel
এর মান অনুযায়ী আপনি ত্রুটি চেক করতে পারেন এবং সেই অনুযায়ী স্ক্রিপ্টের আচরণ পরিবর্তন করতে পারেন।
ErrorLevel কী?
ErrorLevel
হল একটি স্ট্যাটাস কোড যা সাধারণত কোনো কমান্ডের সফলতা বা ব্যর্থতার তথ্য প্রদান করে:
উদাহরণ:
@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% neq 0 (
echo Error occurred during file copy.
) else (
echo File copied successfully.
)
এখানে:
copy
কমান্ডটি চালানোর পর %errorlevel%
চেক করা হচ্ছে।ErrorLevel
0 না হয় (অর্থাৎ, যদি কোনো ত্রুটি ঘটে), তবে Error occurred during file copy
মেসেজটি প্রদর্শিত হবে।File copied successfully
মেসেজটি দেখানো হবে।কিছু পরিস্থিতিতে, আপনি নির্দিষ্ট ত্রুটি কোড চেক করতে চাইলে, ErrorLevel
এর বিভিন্ন মানের সাথে কাজ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি জানেন যে কোনো নির্দিষ্ট কমান্ড 1 বা 2 এর মধ্যে কোনো ত্রুটি সৃষ্টি করবে, তাহলে আপনি সেগুলোকেও চেক করতে পারেন।
উদাহরণ:
@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% == 1 (
echo File not found.
) else if %errorlevel% == 2 (
echo Access denied.
) else if %errorlevel% neq 0 (
echo Unknown error occurred.
) else (
echo File copied successfully.
)
এখানে:
ErrorLevel
1 হয়, তা হলে File not found
মেসেজটি দেখানো হবে।ErrorLevel
2 হয়, তা হলে Access denied
মেসেজটি প্রদর্শিত হবে।ErrorLevel
থাকলে Unknown error occurred
মেসেজটি দেখানো হবে।ErrorLevel
0 থাকে, তবে File copied successfully
মেসেজটি প্রদর্শিত হবে।Batch Script এ ত্রুটি পরিচালনার জন্য goto
কমান্ডও ব্যবহার করা যেতে পারে। goto
ব্যবহার করে আপনি একটি নির্দিষ্ট লেবেলে চলে যেতে পারেন যদি কোনো ত্রুটি ঘটতে থাকে, যাতে পরবর্তী কমান্ডগুলো এক্সিকিউট না হয় বা আপনি ত্রুটির পরবর্তী পদক্ষেপ নিতে পারেন।
উদাহরণ:
@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% neq 0 goto ErrorHandler
echo File copied successfully.
goto End
:ErrorHandler
echo Error occurred during file copy.
goto End
:End
এখানে:
copy
কমান্ডে ত্রুটি ঘটে, তাহলে স্ক্রিপ্টটি ErrorHandler
লেবেলে চলে যাবে এবং ত্রুটির মেসেজ প্রদর্শন করবে।File copied successfully
মেসেজটি প্রদর্শিত হবে।ত্রুটির লগ তৈরি করার জন্য Batch Script এ আপনি সহজেই ত্রুটির তথ্য একটি টেক্সট ফাইলে সংরক্ষণ করতে পারেন। এটি মূলত স্ক্রিপ্টের ডিবাগিং এবং ত্রুটি শনাক্তকরণে সাহায্য করে।
উদাহরণ:
@echo off
echo Trying to copy file...
copy C:\source.txt D:\destination.txt
if %errorlevel% neq 0 (
echo Error occurred at %date% %time%: Error level %errorlevel% >> C:\error_log.txt
echo Error occurred. Check error_log.txt for details.
) else (
echo File copied successfully.
)
এখানে:
ErrorLevel
সহ একটি লগ ফাইল (C:\error_log.txt
) তৈরি হবে।>>
অপারেটর ব্যবহার করে লগ ফাইলে নতুন ত্রুটি যুক্ত করতে পারেন।Batch Script এ ত্রুটি পরিচালনা করার জন্য সরাসরি try-catch
ব্লক নেই, তবে ErrorLevel
এবং if
কন্ডিশন ব্যবহার করে আপনি কার্যকরভাবে ত্রুটি পরিচালনা করতে পারেন। তবে, এর কিছু সীমাবদ্ধতা রয়েছে:
Batch Script এ সরাসরি try-catch
ব্যবহার করা সম্ভব না হলেও, ErrorLevel
এবং if
কন্ডিশনের মাধ্যমে ত্রুটি পরিচালনা করা সম্ভব। আপনি বিভিন্ন ত্রুটি কোডের উপর ভিত্তি করে নির্দিষ্ট পদক্ষেপ নিতে পারেন, যেমন ফাইল কপি করতে ব্যর্থ হলে একটি লগ তৈরি করা বা স্ক্রিপ্টটি বন্ধ করে দেওয়া। goto
কমান্ডের মাধ্যমে আপনি ত্রুটির পরবর্তী প্রক্রিয়াও নির্ধারণ করতে পারেন, যাতে স্ক্রিপ্টটি আরও স্থিতিশীল এবং কার্যকর হয়।
Batch Script ব্যবহার করে লগ তৈরি করা এবং লগিং টেকনিকগুলি প্রয়োগ করা অনেক গুরুত্বপূর্ণ যখন আপনাকে স্ক্রিপ্টের কার্যকারিতা ট্র্যাক করতে হয় অথবা কোনো সমস্যা বা ত্রুটি ডিবাগ করতে হয়। লগ ফাইলগুলো স্ক্রিপ্টের আউটপুট বা ত্রুটি সনাক্তকরণে সাহায্য করে, এবং সেগুলোর মাধ্যমে স্ক্রিপ্টের কার্যক্রমের বিস্তারিত বিবরণ পাওয়া যায়।
লগ ফাইল তৈরি করতে, সাধারণত echo
কমান্ড ব্যবহার করা হয় যাতে স্ক্রিপ্টের আউটপুট বা মেসেজ একটি নির্দিষ্ট ফাইলে রিডাইরেক্ট করা যায়। ফাইলটি তৈরি হবে যদি তা আগে থেকেই না থাকে, আর যদি থাকে তাহলে তার মধ্যে নতুন তথ্য যোগ হবে।
echo This is a log message >> C:\path\to\logfile.txt
এখানে:
echo
কমান্ডটি লগ মেসেজ তৈরি করে।>>
এর মাধ্যমে আউটপুট একটি ফাইলে রিডাইরেক্ট করা হয়। যদি ফাইলটি না থাকে, এটি নতুন ফাইল তৈরি করবে।logfile.txt
হল সেই ফাইল যেখানে লগ ইনফরমেশন সেভ হবে।লগের মধ্যে সময় এবং তারিখ যোগ করতে, আপনাকে Windows কমান্ড প্রম্পটের মাধ্যমে সিস্টেমের বর্তমান সময় এবং তারিখ বের করার জন্য %date%
এবং %time%
ভেরিয়েবল ব্যবহার করতে হবে। টাইমস্ট্যাম্প লগ মেসেজের অংশ হিসেবে অন্তর্ভুক্ত করা অনেক ভালো প্র্যাকটিস।
echo %date% %time% - This is a log message >> C:\path\to\logfile.txt
এটি লগ ফাইলে প্রতিটি মেসেজের আগে বর্তমান তারিখ এবং সময় অন্তর্ভুক্ত করবে।
যখন কোনো স্ক্রিপ্টে ত্রুটি ঘটে, তখন তাকে লগ ফাইলে টোকেন বা মেসেজ হিসেবে যোগ করা অত্যন্ত গুরুত্বপূর্ণ। আপনি স্ক্রিপ্টের এক্সিকিউশন স্ট্যাটাস চেক করতে errorlevel
ব্যবহার করতে পারেন। যদি কোনো ত্রুটি ঘটে, আপনি সেই ত্রুটির জন্য একটি মেসেজ লগ ফাইলে লিখে রাখতে পারেন।
echo %date% %time% - Script started >> C:\path\to\logfile.txt
:: Some command that might fail
somecommand.exe
if %errorlevel% neq 0 (
echo %date% %time% - Error occurred during command execution >> C:\path\to\logfile.txt
) else (
echo %date% %time% - Command executed successfully >> C:\path\to\logfile.txt
)
এখানে:
%errorlevel%
চেক করা হয়, যা কমান্ডের আউটপুট স্ট্যাটাস রিটার্ন করে।neq 0
মানে যদি ত্রুটি ঘটে (যতক্ষণ না আউটপুট স্ট্যাটাস 0 হয়)।যদি আপনি দীর্ঘ সময় ধরে স্ক্রিপ্ট চালান এবং প্রতিদিন বা প্রতি কিছু নির্দিষ্ট সময়ে নতুন লগ ফাইল তৈরি করতে চান, তাহলে লগ রোলিং পদ্ধতি ব্যবহার করা যেতে পারে। একে একটি নির্দিষ্ট সময়ের মধ্যে নতুন লগ ফাইল তৈরি করার জন্য ব্যবহৃত হয়, যাতে পুরনো লগ ফাইলটি অগণিত তথ্যের মধ্যে হারিয়ে না যায়।
set logfile=C:\path\to\logfile_%date:~-4,4%%date:~4,2%%date:~7,2%.txt
echo %date% %time% - This is a log message >> %logfile%
এখানে:
%date:~-4,4%
, %date:~4,2%
, %date:~7,2%
ব্যবহার করে বর্তমান তারিখের সাল, মাস, এবং দিন নিয়ে একটি নতুন ফাইলনাম তৈরি করা হয়েছে, যার মাধ্যমে প্রতি দিনের জন্য আলাদা একটি লগ ফাইল তৈরি হবে।লগ ফাইলের আউটপুট সুন্দর এবং পাঠযোগ্য করার জন্য, আপনি নির্দিষ্ট ফরম্যাট ব্যবহার করতে পারেন, যাতে লগের মধ্যে গুরুত্বপূর্ণ তথ্য স্পষ্টভাবে দেখা যায়। সাধারণত echo
কমান্ডের মাধ্যমে আউটপুট ফরম্যাট করতে tab
বা space
ব্যবহার করা হয়।
echo %date% %time% - INFO: The script has started. >> C:\path\to\logfile.txt
echo %date% %time% - ERROR: Failed to run command >> C:\path\to\logfile.txt
এখানে:
INFO
এবং ERROR
স্ট্যাটাস ব্যবহার করে লোগের গুরুত্ব নির্ধারণ করা হয়েছে।যদি আপনি চান যে লগ ফাইলটি নতুন স্ক্রিপ্ট রান করার সময় পুরনো লগ ডেটা থেকে পরিষ্কার হয়ে যাক, তাহলে ফাইলটি প্রথমে ডিলিট করে নতুন করে তৈরি করতে পারেন।
del C:\path\to\logfile.txt
echo %date% %time% - New Log Started >> C:\path\to\logfile.txt
এটি পুরনো লগ ফাইল মুছে দিয়ে একটি নতুন লগ ফাইল তৈরি করবে।
Batch Script এ ডিবাগিং করার জন্য লগ ব্যবহার করা একটি খুব কার্যকর পদ্ধতি। স্ক্রিপ্টের প্রতিটি ধাপে যদি লগ মেসেজ থাকে, তাহলে কোনো ত্রুটি ঘটলে সহজেই ডিবাগ করা সম্ভব হয়।
echo %date% %time% - Starting the process >> C:\path\to\logfile.txt
:: Do some task
echo %date% %time% - Task 1 completed >> C:\path\to\logfile.txt
:: Do another task
echo %date% %time% - Task 2 completed >> C:\path\to\logfile.txt
:: End of script
echo %date% %time% - Script execution completed >> C:\path\to\logfile.txt
এখানে, স্ক্রিপ্টের প্রতিটি গুরুত্বপূর্ণ ধাপের পরে লগ ইনফরমেশন যোগ করা হচ্ছে, যাতে স্ক্রিপ্টের কোনো ধাপে সমস্যা হলে তা সহজে শনাক্ত করা যায়।
Batch Script এ লগ তৈরি করা এবং লগিং টেকনিক ব্যবহার করা খুবই গুরুত্বপূর্ণ। লগ ফাইলের মাধ্যমে আপনি স্ক্রিপ্টের কার্যকারিতা ট্র্যাক করতে পারবেন এবং ত্রুটির সনাক্তকরণে সাহায্য পেতে পারেন। echo
, %date%
, %time%
, এবং errorlevel
ব্যবহার করে লগ মেসেজ তৈরি করা যায় এবং ফাইলের মধ্যে সময় এবং তারিখ যোগ করা যায়। এছাড়া, লগ রোলিং, ফরম্যাটিং, এবং ডিবাগিং পদ্ধতিগুলি ব্যবহার করে আপনি আপনার স্ক্রিপ্টের কার্যকারিতা আরও উন্নত করতে পারেন।
Batch Script Debugging একটি গুরুত্বপূর্ণ ধাপ, বিশেষত যখন স্ক্রিপ্টে সমস্যা হয় বা আপনি নিশ্চিত হতে চান যে আপনার স্ক্রিপ্ট ঠিকভাবে কাজ করছে। যখন আপনি Batch Scripting ব্যবহার করেন, তখন স্ক্রিপ্টের ত্রুটি চিহ্নিত করা এবং তা সমাধান করা কিছুটা চ্যালেঞ্জিং হতে পারে, তবে কিছু সহজ কৌশল এবং টিপস ব্যবহার করে আপনি এই কাজটি সহজ করে নিতে পারেন।
একটি সাধারণ কিন্তু কার্যকরী টুল হল echo কমান্ড। স্ক্রিপ্টের মধ্যে কোথায় সমস্যা হচ্ছে তা দেখতে, আপনি বিভিন্ন অংশের আউটপুট দেখতে পারেন। আপনি আপনার স্ক্রিপ্টের বিভিন্ন পয়েন্টে echo কমান্ড ব্যবহার করতে পারেন যাতে আপনি বুঝতে পারেন কোন লাইনটি কার্যকরী হচ্ছে বা কোন লাইনটি ত্রুটি সৃষ্টি করছে।
উদাহরণ:
echo Checking file existence...
if exist myfile.txt (
echo File exists
) else (
echo File not found
)
এটি স্ক্রিপ্টের মধ্যবর্তী স্টেটমেন্টগুলো আউটপুট হিসেবে প্রদর্শন করবে, যা আপনাকে স্ক্রিপ্টের কোথায় সমস্যা হতে পারে তা বুঝতে সাহায্য করবে।
এটি একটি খুবই উপকারী কৌশল যখন আপনি স্ক্রিপ্টের প্রত্যেকটি কমান্ডের আউটপুট দেখতে চান। echo on দিয়ে আপনি স্ক্রিপ্টের প্রতিটি কমান্ডের আউটপুট দেখতে পাবেন। আর echo off দিয়ে আপনি কমান্ড লাইন থেকে অপ্রয়োজনীয় আউটপুট সরাতে পারবেন।
উদাহরণ:
@echo off
echo Starting script...
echo This is a test message.
এখানে echo off ব্যবহৃত হয়েছে যাতে স্ক্রিপ্টের প্রথম কমান্ডটি echo আউটপুট প্রদর্শন না করে। আপনি যদি স্ক্রিপ্টের মধ্যে ডিবাগিং করতে চান, তবে echo on ব্যবহার করুন।
pause কমান্ড ব্যবহার করে আপনি স্ক্রিপ্টের execution স্থগিত করতে পারেন, যাতে স্ক্রিপ্ট চলমান অবস্থায় আপনি আউটপুট দেখতে পারেন। এটি একটি ভাল পদ্ধতি যখন আপনি স্ক্রিপ্টটি চালানোর পর অপ্রত্যাশিত ফলাফল পেতে পারেন এবং তা পর্যালোচনা করতে চান।
উদাহরণ:
echo Starting the script...
pause
এটি স্ক্রিপ্টের execution থামিয়ে দেয় এবং আপনি স্ক্রিপ্টের আউটপুট দেখতে পারবেন। পরবর্তীতে কীবোর্ড থেকে একটি কী চাপলেই স্ক্রিপ্ট আবার চলতে শুরু করবে।
Errorlevel একটি বিশেষ পরিবেশ ভেরিয়েবল, যা পূর্ববর্তী কমান্ডের ফলাফল সংরক্ষণ করে। এটি ব্যবহার করে আপনি স্ক্রিপ্টের মধ্যে ত্রুটি সনাক্ত করতে পারেন এবং পরবর্তী পদক্ষেপ নিতে পারেন।
যেকোনো কমান্ড সফলভাবে সম্পন্ন হলে Errorlevel ভ্যালু 0 থাকে এবং ত্রুটি ঘটলে এটি কোনো ধরণের ধনাত্মক মান (যেমন 1, 2 ইত্যাদি) ধারণ করে।
উদাহরণ:
echo Running a command...
somecommand.exe
if errorlevel 1 (
echo Error occurred during command execution
)
এটি দেখাবে যদি পূর্ববর্তী কমান্ডের আউটপুট errorlevel 1 বা তার বেশি হয়, তবে একটি ত্রুটি ঘটেছে এবং আপনার স্ক্রিপ্ট সেই অনুযায়ী কাজ করবে।
Batch Script-এ লগ ফাইল তৈরি করার মাধ্যমে আপনি স্ক্রিপ্টের ক্রমাগত কার্যকলাপ ট্র্যাক করতে পারেন। আপনি স্ক্রিপ্টের আউটপুট ফাইলের মধ্যে লগ করতে পারেন, যাতে পরে পর্যালোচনা করতে পারেন কোথায় সমস্যা হয়েছে। এই উদ্দেশ্যে echo কমান্ড ব্যবহার করে আউটপুট একটি ফাইলের মধ্যে লেখা যেতে পারে।
উদাহরণ:
echo Starting script > script_log.txt
echo Performing Task 1... >> script_log.txt
echo Task 1 Completed >> script_log.txt
এখানে, >>
ব্যবহার করে আউটপুট ফাইলের শেষে তথ্য যোগ করা হচ্ছে এবং >
ব্যবহার করে নতুন ফাইলে তথ্য লেখা হচ্ছে। এতে আপনি স্ক্রিপ্টের কার্যকলাপের একটি পূর্ণাঙ্গ লগ ফাইল তৈরি করতে পারবেন।
স্ক্রিপ্টে সিনট্যাক্স বা লজিক্যাল ত্রুটি সনাক্ত করতে:
উদাহরণ:
echo "Hello World"
উপরের কমান্ডে আপনি একটি ভুল দেখতে পাবেন কারণ echo কমান্ডে উদ্ধৃতি চিহ্ন ব্যবহার করার প্রয়োজন নেই। সঠিকভাবে লেখা হবে:
echo Hello World
আপনি চাইলে Batch Script ডিবাগ করতে তৃতীয় পক্ষের টুল বা IDE ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি Notepad++ বা Visual Studio Code-এর মত টেক্সট এডিটর ব্যবহার করে স্ক্রিপ্ট লেখার সময় ত্রুটিগুলি চিহ্নিত করতে পারেন। এই এডিটরগুলো সিনট্যাক্স হাইলাইটিং এবং কিছু বেসিক স্ক্রিপ্ট ডিবাগিং টুলস অফার করে থাকে।
স্ক্রিপ্টের মধ্যে comments ব্যবহার করা, যেগুলি REM বা :: দিয়ে শুরু হয়, ডিবাগিং প্রক্রিয়াকে সহজ করে তোলে। আপনি একটি নির্দিষ্ট লাইন বা কোড ব্লক নিষ্ক্রিয় (disable) করতে পারেন, যাতে সেগুলি রান না হয় এবং অন্যান্য অংশে ফোকাস করতে পারেন।
উদাহরণ:
REM This is a comment explaining the next line
echo Starting script...
এটি স্ক্রিপ্টে মন্তব্য যুক্ত করবে এবং সেই লাইনটি কার্যকরী হবে না।
যদি আপনার স্ক্রিপ্টটি খুব বড় হয় বা ধীরে চলে, তবে কিছু অপটিমাইজেশন কৌশল ব্যবহার করা দরকার। যেমন:
ডিবাগিং এবং অপটিমাইজেশন প্রক্রিয়া সঠিকভাবে অনুসরণ করলে আপনি সহজেই স্ক্রিপ্টে ত্রুটি চিহ্নিত করতে পারবেন এবং কার্যকারিতা বৃদ্ধি করতে পারবেন।
common.read_more